package com.liukunup.distance;

import com.liukunup.bean.Rect;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;

/**
 * 面积 Area
 * @author Liu Kun
 * @date 2021-04-03 20:26:05
 **/
@Slf4j
public class Area {

    /**
     * 计算Area
     * @param w   矩形宽度
     * @param h   矩形高度
     * @param <T> 值类型为Number的子类
     * @return 矩形面积值
     */
    public static <T extends Number> double calc(@NonNull T w, @NonNull T h) {
        return w.doubleValue() * h.doubleValue();
    }

    /**
     * 计算Area
     * 当矩形使用 左上角+右下角 坐标方式描述
     * @param rect 矩形
     * @return 矩形面积值
     */
    public static double calc(@NonNull Rect<Double> rect) {
        // 计算宽高
        Double w = rect.getRightBottom().getX() - rect.getLeftTop().getX();
        Double h = rect.getRightBottom().getY() - rect.getLeftTop().getY();
        // 计算面积
        return calc(w, h);
    }
}
